\chapter{Interfaz de Usuario}

	\section{Introducción}
Teniendo en cuenta a quienes está destinado el uso del sistema se planteó la necesidad de incluir una interfaz gráfica que facilite su uso y comprensión. La importancia de proveer una interfaz gráfica hace en muchos casos a la popularidad del uso de un sistema, teniendo en cuenta que los usuarios principales no están familiarizados con consolas de comandos de texto. 
En este caso incluimos una modesta interfaz gráfica que simplifica la carga de los parámetros que $ASO$ utiliza y presenta los resultados obtenidos. 

	\section{Implementación de la interfaz gráfica}
	Para su implementación utilizamos Qt (\url{nokia.qt.com}), un framework multiplataforma que provee una gran cantidad de Widgets (elementos de interfaz gráfica) para construir GUI's de forma intuitiva y simple.
	La interfaz permite cargar los archivos necesarios y configurar los parámetros del plugin, así como visualizar los resultados obtenidos para luego analizarlos e imprimirlos.
	Su versatilidad permite que la interfaz cree Widgets de acuerdo a los parámetros necesarios que utilice el plugin. Esto es crucial ya que el papel del plugin en el sistema es fundamental para su funcionamiento. También se tiene en cuenta que estos parámetros poseen valores por defecto para facilitar la configuración del sistema.
	
	\subsection{Dependencias de la interfaz}
	Para poder utilizar la GUI sera necesario tener:
	\begin{itemize}
	\item Sistema operativo Linux o Windows.
	\item Qt versión 4.6 o superior.
	\end{itemize}
		
	\subsection{Demostración y uso de la interfaz}
	A continuación exhibimos algunas imágenes de la interfaz.
	
	\begin{enumerate}
	\item Compilación:
	En el directorio $qt\_gui$ se encuentra el archivo Makefile que permite la compilación del sistema.
	\item Ventana Principal:
	En esta primera parte se seleccionan los archivos correspondientes a la secuencia inicial y la base de datos ademas se debe indicar el nombre del archivo de salida. Opcionalmente se pueden agregar comentarios que serán anexados al archivo de las terapias (Fig. 12.1).
	
	\begin{figure}[h!]
	\centering
	\includegraphics[scale=0.65]{pictures/gui_ppal.png}
	\caption{Pantalla principal.} 
	\end{figure} 		
	
	\item Plugin:
	Se debe seleccionar un plugin con extensión $.so$ el cual debe ser construido previamente. Una vez cargado el plugin se muestran los parámetros configurables que este posee (Fig. 12.2).  
	
	\begin{figure}[h!]
	\centering
	\includegraphics[scale=0.65]{pictures/gui_plugin.png}
	\caption{Pantalla de configuración de Plugin.} 
	\end{figure} 		
	
	\item Output:
	Una vez configurados los parámetros requeridos y ejecutado el programa, en la solapa de OutPut podremos ver la salida con el ranking de las terapias pudiendo este imprimirse. Los archivos de salida se nombran con extensión $.trp$ y son colocados en el directorio $output$ (Fig 12.3).
		
	
	\begin{figure}[h!]
	\centering
	\includegraphics[scale=0.65]{pictures/gui_output.png}
	\caption{Pantalla de output.} 
	\end{figure} 
	
	\end{enumerate}
	
	\section{Interfaz de Consola}
    También se provee una interfaz de consola que permite la utilización del sistema a usuarios que no simpaticen con las interfaces gráficas o que pretendan ahorrar rendimiento del sistema. La sintaxis de la interfaz de consola se define como:
	
	\begin{lstlisting}
	
	./aso SEQUENCE_FILE DATABASE_FILE PLUGIN_FILE RANK_VALUE OUT_FILE
	
	\end{lstlisting}
	
	Donde:
	\begin{itemize}
	\item $SEQUENCE\_FILE$: Ruta del archivo de secuencia inicial. Debe ser de extensión $.txt$.
	\item $DATABASE\_FILE$: Ruta del archivo de la base de datos. Debe ser de extensión $.xml$.
	\item $PLUGIN\_FILE$: Ruta del archivo con extensión $.so$ que corresponde al plugin.
	\item $RANK\_VALUE$: Cantidad de terapias a tener considerar en el ranking. Debe ser un valor mayor a $0$.
	\item $OUT\_FILE$: Nombre del archivo de salida.
	\end{itemize}
	
	Luego el sistema pide si se desean colocar algunas observaciones al archivo de salida y a continuación solicita completar los parámetros del plugin.
	Los resultados son retornados en el mismo formato (un archivo con extensión $.trp$) en el directorio $outputs$.
		
	\section{Interfaz híbrida}
	En un momento se propuso implementar una interfaz gráfica con Zenity (\url{http://live.gnome.org/Zenity}), una herramienta que permite mostrar elementos gráficos de $GTK+$ utilizando scripts de bash. Esto permitía que algunos elementos del sistema pudieran ser configurables a través de cuadros de texto. El problema radicó en que zenity tiene grandes limitaciones de uso en cuanto a variedad de opciones o configuraciones ya que los elementos vienen preestablecidos.	
	
	
	
	